﻿#region Header

/*
Remote views based on linq
By

Pascal Hauser 
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

and

Raphael Gfeller
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

*/

#endregion

#region Usings

#endregion

namespace Sebarf.Core.Interfaces {
	/// <summary>
	/// is responsible for locating services
	/// </summary>
	public interface IServiceLocatorService {
		#region Public Methods

		/// <summary>
		/// returns the first found service of the given type
		/// </summary>
		/// <typeparam name="TServiceType"></typeparam>
		/// <returns></returns>
		TServiceType GetRegisteredService<TServiceType>() where TServiceType : class;

		/// <summary>
		/// returns all services supporting the type given
		/// </summary>
		/// <typeparam name="TServiceType"></typeparam>
		/// <returns></returns>
		TServiceType[] GetRegisteredServices<TServiceType>() where TServiceType : class;

		/// <summary>
		/// returns if the service of the given type is available
		/// </summary>
		/// <typeparam name="TServiceType"></typeparam>
		/// <returns></returns>
		bool IsServiceAvailable<TServiceType>() where TServiceType : class;

		#endregion
	}
}